杨辉三角,数学黑洞


杨辉三角,我的思想是,使用不规则的二位数组来存取


每一行的第一个元素和最后一个元素都先赋为1

中间的元素则按照规则来计算,没生成一行元素则扩容,增加一行且这行的列数比上一行多1


上代码:


import java.util.Scanner;
public class test{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int a[][]=new int[0][0];
//新数组从0行0列依次扩容
for(int i=0;i<n;i++){
a=expand(a);
}
printArray(a);
}
public static int[][] expand(int[][] a){//数组扩容函数
//定义一个比a数组多一行的结构相同新数组
int[][] newArray=new int[a.length+1][];
for(int i=0;i<a.length;i++){
newArray[i]=new int[a[i].length];
}
//判断a数组行数是否为0,新数组最后一行列数加一
if(a.length==0) newArray[a.length]=new int[1];
else newArray[a.length]=new int[a[a.length-1].length+1];
//复制a数组的前a.length行元素到新数组
System.arraycopy(a,0,newArray,0,a.length);
//新数组第一个元素和最后一个元素赋值为1
newArray[a.length][0]=1;
if(a.length>0){//判断a数组长度是否为0,不为0的按照规则计算
newArray[a.length][a[a.length-1].length]=1;
for(int i=1;i<a[a.length-1].length;i++){
newArray[a.length][i]=newArray[a.length-1][i]+newArray[a.length-1][i-1];
}
}
return newArray;
}
public static void printArray(int[][] a){//数组遍历函数
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.print(a[i][j]+"\t");
}
System.out.println("\n");
}
}
}






这是一个非常有趣的数学结论,每次只需要取得这个四位数的每一位,然后组合得到一个最大的数和最小的数


上代码:


import java.util.Arrays;
import java.util.Scanner;
public class test{
public static void main(String[] args){
int n;
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
mathBlackHole(n);

}
public static int mathBlackHole(int n){
if(n==6174){
System.out.println("成功");
return 0;
}
int[] a=new int[4];
a[0]=n/1000;
a[1]=n%1000/100;
a[2]=n%100/10;
a[3]=n%10;
if(a[0]==a[1]&&a[1]==a[2]&&a[2]==a[3]){
System.out.println("输入有误");
return 0;
}
Arrays.sort(a);
int max=a[3]*1000+a[2]*100+a[1]*10+a[0]; 
int min=a[0]*1000+a[1]*100+a[2]*10+a[3];
System.out.println(max+"-"+min+"="+(max-min));
n=mathBlackHole(max-min);
return max-min;
}
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值